// 通用组件类型定义

// 媒体文件接口
export interface MediaFile {
  fileId?: number
  id?: number
  originalFileName?: string
  name?: string
  fileName?: string
  fileType: 'image' | 'video' | 'audio' | 'document'
  fileSize?: number
  size?: number
  createTime?: string
  uploadedAt?: string
  thumbnailUrl?: string
  fileUrl?: string
  filePath?: string
  duration?: number
  isFavorite?: boolean
  isNew?: boolean
  aiTags?: string
  uploadProgress?: number
  fileFormat?: string
  syncStatus?: 'synced' | 'uploading' | 'error'
}

// 操作按钮接口
export interface ActionButton {
  key?: string
  text?: string
  icon?: string
  type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default'
  disabled?: boolean
  loading?: boolean
  danger?: boolean
  primary?: boolean
  className?: string
  needConfirm?: boolean
  confirmTitle?: string
  confirmContent?: string
  handler?: (action: ActionButton, index: number) => void
}

// 空状态操作接口
export interface EmptyStateAction {
  text: string
  type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default'
  icon?: string
  loading?: boolean
  handler?: () => void
}

// 统计卡片数据接口
export interface StatCardData {
  value: number | string
  label: string
  icon?: string
  iconType?: 'primary' | 'success' | 'warning' | 'error' | 'info' | 'default'
  description?: string
  trend?: number
  trendLabel?: string
  formatType?: 'number' | 'percentage' | 'currency' | 'bytes'
  precision?: number
}

// 媒体卡片尺寸类型
export type MediaCardSize = 'small' | 'medium' | 'large'

// 媒体卡片变体类型
export type MediaCardVariant = 'default' | 'compact' | 'detailed'

// 加载状态类型
export type LoadingStateType = 'skeleton' | 'grid' | 'spinner' | 'progress' | 'dots' | 'pulse'

// 组件尺寸类型
export type ComponentSize = 'small' | 'medium' | 'large'

// 图标类型
export type IconType = 'primary' | 'success' | 'warning' | 'error' | 'info' | 'default'

// 方向类型
export type DirectionType = 'horizontal' | 'vertical'